﻿Imports System.Resources
Imports System.Threading
Imports Biz
Imports BLL


Public Class ctrlStart
    Private _llamador As frmMainMetro
    Private _oUsuario As cUsuario = Nothing
    Private _iContadorIntentos As Int16 = 0


    Public Property Llamador() As frmMainMetro
        Get
            Return _llamador
        End Get
        Set(value As frmMainMetro)
            _llamador = value
        End Set
    End Property

    Private Sub btnCancelar_Click(sender As Object, e As EventArgs) Handles btnCancelar.Click
        Application.Exit()
    End Sub

    Private Sub btnEntrar_Click(sender As Object, e As EventArgs) Handles btnEntrar.Click
        Dim oAux As cUsuario
        Dim strError As String = ""

        oAux = New cUsuario
        oAux.Usu_Legajo = Utils.Convert.ToInt16(txtUsuario.Text)
        oAux.PasswordActual.Pwd_Password = Utils.Encriptador.Encriptar(txtPass.Text)

        _iContadorIntentos = _iContadorIntentos + 1

        Try
            oAux = GestorUsuario.Instance.Logon(oAux, strError)

            If Not GestorDigitoVerificador.Instance.EsValido Then
                MessageBox.Show("La verificación de integridad de la base de datos arroja inconsistencias. El sistema se cerrará. Por favor consulte con el administrador.", "Error de integridad en la base de datos", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                Application.Exit()
            End If

            If Not oAux Is Nothing Then
                AppCurrentState.UsuarioLogueado = oAux

                If AppCurrentState.UsuarioLogueado.Idioma.Idi_Codigo = 1 Then
                    _llamador.PosicionarComboIdioma("es")
                Else
                    _llamador.PosicionarComboIdioma("en")
                End If

                _llamador.AplicarPermisos()

                _llamador.CloseModalPanel(Me, DevComponents.DotNetBar.Controls.eSlideSide.Left)

                GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.Login))
            Else
                txtPass.Text = ""

                lblMensajes.Text = strError

                GestorBitacora.Instance.Loguear(New cBitacora_Usuario(0, Utils.Enumeradores.Bitacora.LoginFallido))

                If _iContadorIntentos >= 3 Then
                    Application.Exit()
                End If
            End If


        Catch ex As Excepciones.DepartamentoFalloAlta
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Public Sub Mostrar()

        lblMensajes.Text = ""

        _oUsuario = Nothing

        txtUsuario.Focus()

    End Sub

    Private Sub txtUsuario_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtUsuario.KeyPress
        e.Handled = Not IsNumeric(e.KeyChar) And Not Char.IsControl(e.KeyChar)
    End Sub

    Private Sub txtUsuario_LostFocus(sender As Object, e As EventArgs) Handles txtUsuario.LostFocus
        Dim oUsuario As cUsuario = New cUsuario

        oUsuario.Usu_Legajo = Utils.Convert.ToInt16(txtUsuario.Text)

        Try
            oUsuario = GestorUsuario.Instance.Buscar(oUsuario)

            If Not oUsuario Is Nothing Then
                lblUsuarioNombre.Text = oUsuario.Usu_Nombre + " " + oUsuario.Usu_Apellido
            Else
                lblUsuarioNombre.Text = ""
            End If

        Catch ex As Excepciones.UsuarioFalloBuscar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Private Sub txtUsuario_TextChanged(sender As Object, e As EventArgs) Handles txtUsuario.TextChanged

    End Sub
End Class
